<?php

/**
 * aprobar_oc_interna actions.
 *
 * @package    SAC_CLonsa
 * @subpackage aprobar_oc_interna
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class aprobar_oc_internaActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
    $this->forward('aprobar_oc_interna', 'entrantes');
  }

  public function executeEntrantes(sfWebRequest $peticion)
  {
      $ordenes_compra_interna = OrdenCompraInternaPeer::getPendientesYDesaprobadas();
      $this->ordenes_compra_interna = $ordenes_compra_interna;


      if( $peticion->isMethod('post') &&  !is_null($peticion->getParameter('idOrden')) )
      {
          $this->forward('aprobar_oc_interna','aprobar');
      }
      elseif( $peticion->isMethod('post') &&  !is_null($peticion->getParameter('AprobarOrdenId')) )
      {
          $this->forward('aprobar_oc_interna','guardar');
      }
  }

  public function executeAprobar(sfWebRequest $peticion)
  {
      if( $peticion->isMethod('post') &&  !is_null($peticion->getParameter('idOrden')) )
      {
          $ord_compra_interna = OrdenCompraInternaPeer::getOrdenPorId( $peticion->getParameter('idOrden') );
          $this->ord_compra_interna = $ord_compra_interna;
          $solicitudes_compra_interna = SolicitudOrdenCompraInternaPeer::getSolicitudesPorOrdCompraInternaId($ord_compra_interna->getId());
          $this->solicitudes_compra_interna = $solicitudes_compra_interna;
          $htSolicitudes = null;

          $cont = 0;
          foreach ($solicitudes_compra_interna as $solicitud_compra_interna)
          {
              $htSolicitudes[ $cont++ ] = ItemOsPeer::getItemOrdenServicioPorId( $solicitud_compra_interna->getItemOsId() );
          }

          if (!is_null($htSolicitudes))
          {
              $this->htSolicitudes = $htSolicitudes;
          }
      }
  }

  public function executeGuardar(sfWebRequest $peticion)
  {
      if( $peticion->isMethod('post') &&  !is_null($peticion->getParameter('AprobarOrdenId')) )
      {
          $aprobacion = $peticion->getParameter('radio_button_aprobar');
          $this->aprobacion = $aprobacion;
          $observaciones = $peticion->getParameter('observacion_aprobacion');
          $this->observaciones = $observaciones;

          if( $aprobacion == 'aprobada' )
          {
              $this->bandera = 0;
              $ord_compra_interna = OrdenCompraInternaPeer::getOrdenPorId( $peticion->getParameter('AprobarOrdenId') );
              $ord_compra_interna->setEstadoOrdenCompraInternaId(2); // Estqado Copra Interna = Aprobada
              $this->ord_compra_interna = $ord_compra_interna;
              $solicitudes_compra_interna = SolicitudOrdenCompraInternaPeer::
                                            getSolicitudesPorOrdCompraInternaId($ord_compra_interna->getId());
              $htSolicitudes = null;

              foreach ($solicitudes_compra_interna as $solicitud_compra_interna)
              {
                  $solicitud = ItemOsPeer::getItemOrdenServicioPorId( $solicitud_compra_interna->getItemOsId() );
                  $solicitud->setEstadoSolicitudId(9); // Estado = Compra Interna Aprobada
                  $solicitud->save();

                  $accion_en_solicitud = new AccionItemOs();
                  $accion_en_solicitud->setItemOs( $solicitud );
                  $accion_en_solicitud->setsfGuardUser( $this->getUser()->getGuardUser() );
                  $accion_en_solicitud->setTipoAccionItemOsId(9); // Tipo Accion = Aprobación Compra Interna
                  $accion_en_solicitud->setFechaAccion( time() );
                  $accion_en_solicitud->save();
              }

              $accion_en_ord_compra_interna = new AccionEnOrdenCompraInterna();
              $accion_en_ord_compra_interna->setFechaAccion( time() );
              $accion_en_ord_compra_interna->setsfGuardUser( $this->getUser()->getGuardUser() );
              $accion_en_ord_compra_interna->setOrdenCompraInterna( $ord_compra_interna );
              $accion_en_ord_compra_interna->setTipoAccionOrdenCompraInternaId( 1 ); // Tipo Acción = Aprobación
              $accion_en_ord_compra_interna->setObservaciones( $observaciones );
              $accion_en_ord_compra_interna->save();

          }
          else
          {
              $this->bandera = 1;
              $ord_compra_interna = OrdenCompraInternaPeer::getOrdenPorId( $peticion->getParameter('AprobarOrdenId') );
              $this->ord_compra_interna = $ord_compra_interna->getId();
              $solicitudes_compra_interna = SolicitudOrdenCompraInternaPeer::
                                            getSolicitudesPorOrdCompraInternaId($ord_compra_interna->getId());

              $ids_solicitudes = '';
              foreach ($solicitudes_compra_interna as $solicitud_compra_interna)
              {                  
                  $solicitud = ItemOsPeer::getItemOrdenServicioPorId( $solicitud_compra_interna->getItemOsId() );
                  $ids_solicitudes = $ids_solicitudes . '' . $solicitud->getId();
                  $solicitud->setEstadoSolicitudId(8); // Estado = Compra Interna Desaprobada
                  $solicitud->save();

                  $accion_en_solicitud = new AccionItemOs();
                  $accion_en_solicitud->setItemOs( $solicitud );
                  $accion_en_solicitud->setsfGuardUser( $this->getUser()->getGuardUser() );
                  $accion_en_solicitud->setTipoAccionItemOsId(10); // Tipo Accion = Desarobación Compra Interna
                  $accion_en_solicitud->setFechaAccion( time() );
                  $accion_en_solicitud->setObservaciones('
                      Se desaprobado la Orden de Compra Interna N°'.$ord_compra_interna->getId());
                  $accion_en_solicitud->save();

              }

              $accion_en_ord_compra_interna = new AccionEnOrdenCompraInterna();
              $accion_en_ord_compra_interna->setFechaAccion( time() );
              $accion_en_ord_compra_interna->setsfGuardUser( $this->getUser()->getGuardUser() );
              $accion_en_ord_compra_interna->setOrdenCompraInternaId( $ord_compra_interna->getId() );
              $accion_en_ord_compra_interna->setTipoAccionOrdenCompraInternaId( 2 ); // Tipo Acción = Desaprobación
              $accion_en_ord_compra_interna->save();

              $ord_compra_interna->setEstadoOrdenCompraInternaId(3); // Estado Compra Interna = Desaprobada
              $ord_compra_interna->save();


          }
          
      }
  }
}
